use crate::{RepoCheckoutMode, RepoCheckoutOverwriteMode, RepoDevInoCache, SePolicy};
-use glib::translate::{Stash, ToGlib, ToGlibPtr};
+use glib::translate::*;
use libc::c_char;
-use ostree_sys::{OstreeRepoCheckoutAtOptions, OstreeRepoDevInoCache, OstreeSePolicy};
+use ostree_sys::*;
use std::path::PathBuf;
mod repo_checkout_filter;
type WrapperStash<'a, GlibT, WrappedT> = Stash<'a, *mut GlibT, Option<WrappedT>>;
impl<'a> ToGlibPtr<'a, *const OstreeRepoCheckoutAtOptions> for RepoCheckoutAtOptions {
+ #[allow(clippy::type_complexity)]
type Storage = (
Box<OstreeRepoCheckoutAtOptions>,
StringStash<'a, PathBuf>,
if let Some(filter) = &self.filter {
options.filter_user_data = filter.to_glib_none().0;
- options.filter = repo_checkout_filter::trampoline();
+ options.filter = Some(repo_checkout_filter::filter_trampoline);
}
Stash(
use crate::RepoCheckoutFilterResult;
use gio::{File, NONE_CANCELLABLE};
use glib_sys::{GFALSE, GTRUE};
- use ostree_sys::{
- OSTREE_REPO_CHECKOUT_MODE_NONE, OSTREE_REPO_CHECKOUT_MODE_USER,
- OSTREE_REPO_CHECKOUT_OVERWRITE_NONE, OSTREE_REPO_CHECKOUT_OVERWRITE_UNION_IDENTICAL,
- };
use std::ffi::{CStr, CString};
use std::ptr;
);
assert_eq!((*ptr).unused_ints, [0; 6]);
assert_eq!((*ptr).unused_ptrs, [ptr::null_mut(); 3]);
- assert_eq!((*ptr).filter, repo_checkout_filter::trampoline());
+ assert!((*ptr).filter == Some(repo_checkout_filter::filter_trampoline));
assert_eq!(
(*ptr).filter_user_data,
options.filter.as_ref().unwrap().to_glib_none().0,
use crate::{Repo, RepoCheckoutFilterResult};
-use glib::translate::{
- from_glib_borrow, from_glib_none, FromGlibPtrNone, Stash, ToGlib, ToGlibPtr,
-};
+use glib::translate::*;
use glib_sys::gpointer;
use libc::c_char;
-use ostree_sys::{OstreeRepo, OstreeRepoCheckoutFilterResult};
+use ostree_sys::*;
use std::path::{Path, PathBuf};
/// A filter callback to decide which files to checkout from a [Repo](struct.Repo.html). The
///
/// # Panics
/// If any parameter is a null pointer, the function panics.
-unsafe extern "C" fn filter_trampoline(
+pub(super) unsafe extern "C" fn filter_trampoline(
repo: *mut OstreeRepo,
path: *const c_char,
stat: *mut libc::stat,
result.to_glib()
}
-/// Returns the trampoline function in a `Some`.
-///
-/// This is mostly convenient because the full type needs to be written out in fewer places.
-pub(super) fn trampoline() -> Option<
- unsafe extern "C" fn(
- *mut OstreeRepo,
- *const c_char,
- *mut libc::stat,
- gpointer,
- ) -> OstreeRepoCheckoutFilterResult,
-> {
- Some(filter_trampoline)
-}
-
#[cfg(test)]
mod tests {
use super::*;
- use glib::translate::ToGlibPtr;
- use ostree_sys::OSTREE_REPO_CHECKOUT_FILTER_SKIP;
use std::ffi::CString;
use std::ptr;